package com.mandao.concurrency.web;

import java.util.regex.Pattern;

/**
 * @author 蜗牛
 *
 * 1 关于sleep和wait,以下描述错误的一项是?
 * A sleep是线程类Thread的方法,wait是Object类的方法
 * B sleep不释放对象锁,wait放弃对象锁
 * C sleep暂停线程,但监控状态仍然保持,结束后会自动恢复
 * D wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态parameter属性,并且parameter属性的值必须是operate
 *      D 错误 notify后不会直接进入运行状态 而是进入"就绪"状态
 *
 * 2下面说法正确的是?
 * A 短连接多用于操作频繁,点对点的通讯,且连接数不能太多的情况
 * B 数据库的连接一般都用长连接
 *      正确 数据库的连接用长连接， 如果用短连接频繁的通信会造成socket错误，而且频繁的socket 创建也是对资源的浪费
 * C web网站的http服务一般都用短连接
 *      正确 因为长连接对于服务端来说会耗费一定的资源，
 *      而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源，
 *      如果用长连接，而且同时有成千上万的用户，
 *      如果每个用户都占用一个连接的话，那可想而知吧。
 *      所以并发量大，但每个用户无需频繁操作情况下需用短连好。
 * D 长连接多用于并发量大,但是每个用户又不需要频繁操作的情况
 *
 */
public class Interview {
    /** 1编写一个方法 字符串切割 入参两个 返回数组*/
    java.lang.String[] split(java.lang.String str , java.lang.String s){
        java.lang.String[] arr;
        arr = str.split(s);
        return arr;
    }
    /** 2判断一个字符串是4位的整数字*/
    boolean checkNumber (String s){
        boolean isInt = Pattern.matches("\\d+",s);
        if (isInt && s.length()==4){
            return true;
        }else {
            return false;
        }
    }
    /** 3不使用第三个变量 交换两个整型变量的值*/
    void exchange(int a,int b){
        a=a^b;
        b=a^b;
        a=a^b;
        System.out.println("a="+a+";"+"b="+b);
    }

     /** 4
     final: 着重于最终 值的不可修改
     static: 着重于唯一

     final可以修饰：属性，方法，类，局部变量（方法中的变量）

     final修饰的属性的初始化可以在编译期，也可以在运行期，初始化后不能被改变。

     final修饰的属性跟具体对象有关，在运行期初始化的final属性，不同对象可以有不同的值。

     final修饰的属性表明是一个常数（创建后不能被修改）。

     final修饰的方法表示该方法在子类中不能被重写，final修饰的类表示该类不能被继承。

     对于基本类型数据，final会将值变为一个常数（创建后不能被修改）；但是对于对象句柄（亦可称作引用或者指针），final会将句柄变为一个常数（进行声明时，必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是，对象的本身是可以修改的。这一限制也适用于数组，数组也属于对象，数组本身也是可以修改的。方法参数中的final句柄，意味着在该方法内部，我们不能改变参数句柄指向的实际东西，也就是说在方法内部不能给形参句柄再另外赋值）。

     static可以修饰：属性，方法，代码段，内部类（静态内部类或嵌套内部类）

     static修饰的属性的初始化在编译期（类加载的时候），初始化后能改变。

     static修饰的属性所有对象都只有一个值。

     static修饰的属性强调它们只有一个。

     static修饰的属性、方法、代码段跟该类的具体对象无关，不创建对象也能调用static修饰的属性、方法等

     static和“this、super”势不两立，static跟具体对象无关，而this、super正好跟具体对象有关。

     static不可以修饰局部变量。

     static final和final static没什么区别，一般static写在前面。

     static修饰的属性强调它们只有一个，final修饰的属性表明是一个常数（创建后不能被修改）。static final修饰的属性表示一旦给值，就不可修改，并且可以通过类名访问。

     static final也可以修饰方法，表示该方法不能重写，可以在不new对象的情况下调用。

     */

    /* 6 列出jsp中包含外部文件的两种方式,并且阐述有何不同?    http://blog.sina.com.cn/s/blog_6d88b9e1010143yb.html
     *答:include  静态包含  动态包含
     * <%@ include file="base.jsp"%>
     *     静态联编 先引入合成一个jsp后编译  生成一个class文件
     *     先包含后执行
     * <jsp:include file="base.jsp">
     *     先执行后包含
     *
     * jsp九大内置对象:
     * application
     * session
     * request response config
     * pagecontext
     * page
     * out
     * exception
     */

}
